package flyweight;

/**
 * @Author liangliangzhao
 * @data 2023/4/14 16:52
 */

public class Client {
    public static void main(String[] args) {
        //创建一个工厂类
        WebSiteFactory webSiteFactory = new WebSiteFactory();
        //客户要一个以新闻形式发布的网站
        WebSite webSite = webSiteFactory.getWebSiteCategory("新闻");
        webSite.use(new User("jack"));
        WebSite webSite1 = webSiteFactory.getWebSiteCategory("博客");
        webSite1.use(new User("tom"));
        WebSite webSite2 = webSiteFactory.getWebSiteCategory("博客");
        webSite2.use(new User("king"));
        System.out.println("网站池数量为:"+webSiteFactory.getWebSiteCount());

        // 如果Integer.valueOf(x) 在-128到127之间[包含-128和127] 就使用享元m模式返回 否则new
        // 小结：
        // 1、在valueOf方法中 先判断值是否在IntegerCache中 如果不在就创建新的Integer 否则就从缓存池中返回
        // 2、valueOf就使用到享元模式
        // 3、如果使用valueOf方法得到一个Integer实例 范围在-128到127 执行速度比new快

        Integer x = Integer.valueOf(127);
        Integer z = new Integer(127);
        Integer y = Integer.valueOf(127);
        Integer w = new Integer(127);

        System.out.println(x.equals(z));// equals比较大小 true ==比较引用
        System.out.println(x == z);// false
        System.out.println(x == y);// true[因为在范围内 从缓存池中取 而非new实例]
        System.out.println(w == x);// false
        System.out.println(w == z);// false

        Integer j = new Integer(200);
        Integer i = new Integer(200);
        System.out.println(j == i);// false

    }
}
